package org.assocsp3.modele;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;

@Entity
@Table(name="activite")
public class Activite {

	@Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
	
	@Column(name="nom",nullable=false,unique=true)
	private String nom;
	
	@Column(name="lieu",nullable=false)
    private String lieu;
    
	@OneToMany(mappedBy="activite",cascade=CascadeType.ALL,fetch=FetchType.EAGER)
    @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
    /* après effacement d'un paiement de l'entité puis update
     * la table horaire n'est pas mise à jour(horaires de l'activité supprimée toujours présentes)
     * on peut la mettre à jour avec DELETE_ORPHAN*/
	private List<Horaire> horaires;	
	
	@ManyToMany(mappedBy="activites")
	private List<Personne> personnes;

    public Activite() {
    }

    public Activite(String nom, String lieu) {
       this.nom = nom;
       this.lieu = lieu;
    }
   
    public void setId(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public String getNom() {
        return this.nom;
    }
    
    public void setNom(String nom) {
        this.nom = nom;
    }
    public String getLieu() {
        return this.lieu;
    }
    
    public void setLieu(String lieu) {
        this.lieu = lieu;
    }

	public void setHoraires(List<Horaire> horaires) {
		this.horaires = horaires;
	}

	public List<Horaire> getHoraires() {
		return horaires;
	}

	public void setPersonnes(List<Personne> personnes) {
		this.personnes = personnes;
	}

	public List<Personne> getPersonnes() {
		return personnes;
	}

}


